
export module FunctionSyntax {
    // age? 表示可选参数
    // 可选参数必需配置在参数列表的后面
    // function getInfo(name: string, age?: number): string {
    //     if (age) {
    //         // return `${name}---${age}`
    //         return name + '---' + age
    //     }
    //     else
    //         return `${name}---年龄保密`

    // }

    // age: number = 21 表示默认参数
    // function getInfo(name: string, age: number = 21): string {
    //     if (age) {
    //         // return `${name}---${age}`
    //         return name + '---' + age
    //     }
    //     else
    //         return `${name}---年龄保密`

    // }

    // ...numList 表示剩余参数，也是放在参数列表最后
    // 剩余参数会被当做个数不限的可选参数，因为不确定会有多少个该类型的参数传进来
    // function getInfo(a: number, b: number, ...numList: number[]): number {
    //     let sum = a + b;
    //     for (let item of numList) {
    //         sum += item;
    //     }
    //     return sum;
    // }
    // let res = getInfo(1, 2, 3, 4);

    // 函数的重载
    // function getInfo(name: string): string;
    // function getInfo(age: number,): number;
    // function getInfo(str: any): any {
    //     console.log(typeof str);
    //     if (typeof str === "string")
    //         return '姓名：' + str
    //     else
    //         return '年龄：' + str
    // };
    // let res = getInfo(20);

    // 函数的重载 可选参数重载
    function getInfo(name: string): string;
    function getInfo(name: string, age: number,): number;
    function getInfo(name: string, age?: number): any {
        if (age)
            return '姓名：' + name + ' 年龄：' + age;
        else
            return '姓名：' + name
    };
    let res = getInfo('张三', 20);
    console.log(res);

}

